package com.ruyuan2020.im.design.mandator.nouse;

/**
 * 在这个反例中，SmartHomeController直接调用了Light对象的方法，这意味着如果需要添加额外的功能，
 * 比如记录操作日志，则需要在SmartHomeController中添加相应的逻辑，这会增加代码的复杂性，并且违反了开闭原则（对扩展开放，对修改关闭），
 * 此外，如果需要替换灯光控制的实现，比如使用远程服务器来控制灯光，也需要修改SmartHomeController的代码。
 *
 */
public class Client {
    public static void main(String[] args) {
        // 创建灯光对象
        Light light = new Light();

        // 创建智能家居控制器对象，并将灯光对象传递给它
        SmartHomeController controller = new SmartHomeController(light);

        // 控制灯光打开
        controller.controlLightOn();

        // 控制灯光关闭
        controller.controlLightOff();

        // 如果需要添加撤销操作或者记录操作日志，这种直接调用的方式将会变得复杂
    }
}
